/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package vue.composants;

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import javax.swing.JLabel;
import modele.Image;

/**
 *
 * @author Fabien Muguet
 */
public class ImageMiniature extends JLabel {

    // Référence vers l'image importée
    private Image image;

    // Indique si la miniature est selectionnée
    private boolean selectionne = false;


    /**
     * A la construction on passe l'image concernée, et les dimensions maximum de la miniature.
     *
     * @param image L'image importée
     * @param dim Les dimensions maximum du cadre.
     */
    public ImageMiniature(modele.Image image, Dimension dim, MouseListener mouse) {
        // On garde la référence vers l'image
        this.image = image;

        // Création de la miniature
//        miniature = Outils.ajuster(image.getImage(), dim);

        // L'écran écoute les miniatures
        addMouseListener(mouse);

        // On doit afficher le composant à la bonne taille
        BufferedImage mini = image.getImageOuMiniature();
        this.setPreferredSize( new Dimension(mini.getWidth(), mini.getHeight()));

        // Au survol on affiche le curseur "main" pour indiquer le clic
        setCursor( Cursor.getPredefinedCursor( Cursor.HAND_CURSOR ));

        // On dessine
        repaint();
    }


    public void paintComponent(Graphics g) {

        BufferedImage miniature = image.getImageOuMiniature();

          Graphics2D g2d = (Graphics2D)g ;
         g.drawImage(miniature, 0, 0, this);
          if(this.selectionne){
               g2d.setColor(Color.YELLOW);
               g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f ));
               g.fillRect(0, 0, miniature.getWidth(), miniature.getHeight());
           }
    }



    public Image getImage() {
        return image;
    }

    public void setImage(Image image) {
        this.image = image;
    }

     public void setSelectionne(boolean estSelectionne) {
        this.selectionne = estSelectionne;
     }

}

